﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Threading.Tasks;
using System.Web;//Necesario para HttpContext
using System.Web.Security; //Permite traer un objeto membership
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.UI;


 namespace BBL.Seguridad
{
    public class RolesB
    {
        public bool logueado = true;

        public void carga_usuario(ListBox lst_usuarios )
        {
    
            lst_usuarios.DataSource = Membership.GetAllUsers(); ; //Trae todos los usuarios 
            lst_usuarios.DataBind();

            Roles.IsUserInRole(Membership.GetUser().UserName, "Consulta");//Obtener los roles LoginName=Membership
        }

        public void carga_roles(CheckBoxList chkl_roles)
        {
            string[] lista_roles = Roles.GetAllRoles(); //Obtener todos los roles
            chkl_roles.DataSource = lista_roles; //Para que lo cargue
            chkl_roles.DataBind(); //Actualizarlos completamente
        }

        public void carga_roles_usuario(string usuario, CheckBoxList chkl_roles)
        {
            this.carga_roles(chkl_roles);//Si tiene roles que los muestre
            string rol1 = string.Empty; //Realizar matriz y comparar roles con los que tienen y los que no tienen roles asignados
            string rol2 = string.Empty;
            string[] lista_roles = Roles.GetRolesForUser(usuario);
            if (lista_roles.Length > 0)
            {
                for (int i = 0; i <= lista_roles.Length - 1; i++)
                {
                    rol1 = lista_roles[i].ToString(); //Poner todos los roles a rol1
                    for (int j = 0; j <= chkl_roles.Items.Count - 1; j++)
                    {
                        rol2 = chkl_roles.Items[j].Text;
                        if (rol1.Equals(rol2))
                        {
                            chkl_roles.Items[j].Selected = true; //Todos los roles que están iguales los marca
                        }
                    }
                }
            }
            else
            {
                int numero_error = 2;
                string mensaje_eror = "El usuario actual no tiene roles asignados, diríjase a la aplicación externa para asignarlos";

                HttpContext.Current.Response.Redirect("/frm_Error.aspx?error=" + numero_error.ToString() + "&men=" + mensaje_eror);
                return;
            }
          

       }


        public void guardar_roles(string usuario, CheckBoxList chkl_roles)
        {
            string nombre_rol = string.Empty;
            string[] lista_roles = Roles.GetRolesForUser(usuario);

            if (lista_roles.Length > 0)
            {
                Roles.RemoveUserFromRoles(usuario, lista_roles);
                for (int i = 0; i <= chkl_roles.Items.Count - 1; i++)
                {
                    if (chkl_roles.Items[i].Selected)
                    {
                        nombre_rol = chkl_roles.Items[i].Text;
                        Roles.AddUserToRole(usuario, nombre_rol);
                    }
                }
            }
            else
            {
                int numero_error = 2;
                string mensaje_eror = "El usuario actual no tiene roles asignados, diríjase a la aplicación externa para asignarlos";

                HttpContext.Current.Response.Redirect("/frm_Error.aspx?error=" + numero_error.ToString() + "&men=" + mensaje_eror);
                return;
            }
        }
   
    }
}
